﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanLyNganHangDe.BLL;
using QuanLyNganHangDe.DAL;
using QuanLyNganHangDe.DAL.Models;

namespace QuanLyNganHangDe.GUI.HeThong
{
    public partial class FormNguoiSuDung_Detail : FormBaseDialog
    {
        NguoiSuDung nguoiSuDung = null;
        public FormNguoiSuDung_Detail()
        {
            InitializeComponent();
            cmbVaiTro.SelectedIndex = 0;
        }

        public FormNguoiSuDung_Detail(NguoiSuDung nsd)
        {
            InitializeComponent();
            this.nguoiSuDung = nsd;
            txtTenDangNhap.Text = nsd.TenDangNhap;
            txtTenDangNhap.Enabled = false;
            txtHoTen.Text = nsd.HoTen;
            txtMatKhau.Text = "";
            txtMatKhau.Enabled = false;
            cmbVaiTro.SelectedIndex = nsd.VaiTro;
            this.Text = "CAP NHAT THONG TIN NGUOI SU DUNG";
        }

        /// <summary>
        /// Khởi tạo chế độ tìm trên combobox
        /// </summary>
        void InitComBoBoxForVaiTro()
        {
            List<string> ls = new List<string>();
            for (int i = 0; i < cmbVaiTro.Items.Count; i++)
            {
                string item = cmbVaiTro.Items[i].ToString();
                ls.Add(item);
            }
            cmbVaiTro.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            cmbVaiTro.AutoCompleteSource = AutoCompleteSource.CustomSource;
            cmbVaiTro.AutoCompleteCustomSource.AddRange(ls.ToArray());
        }

        private void bntDongY_Click(object sender, EventArgs e)
        {
            #region Kiểm tra tính hợp lệ đầu vào
            if (txtTenDangNhap.Text.IsNullOrEmpty())
            {
                errorProvider1.Clear();
                errorProvider1.SetError(txtTenDangNhap, "Bạn chưa nhập tên đăng nhập");
                txtTenDangNhap.Focus();
                return;
            }
            if (txtHoTen.Text.IsNullOrEmpty())
            {
                errorProvider1.Clear();
                errorProvider1.SetError(txtHoTen, "Bạn chưa nhập họ tên");
                txtHoTen.Focus();
                return;
            }
            if (txtMatKhau.Text.IsNullOrEmpty() && nguoiSuDung == null)
            {
                errorProvider1.Clear();
                errorProvider1.SetError(txtMatKhau, "Bạn chưa nhập mật khẩu khởi tạo");
                txtMatKhau.Focus();
                return;
            }
            if (cmbVaiTro.SelectedIndex == -1)
            {
                errorProvider1.Clear();
                errorProvider1.SetError(cmbVaiTro, "Bạn chưa chọn vai trò hoặc vai trò bạn nhập không đúng");
                cmbVaiTro.Focus();
                return;
            }
            #endregion

            if (nguoiSuDung != null)
            {
                //Cập nhật
                nguoiSuDung.HoTen = txtHoTen.Text;
                nguoiSuDung.VaiTro = cmbVaiTro.SelectedIndex;
                if (!BizNguoiSuDung.Update_NguoiSuDung(nguoiSuDung))
                    DialogUtils.ShowError("Đã có lỗi xảy ra trong quá trình cập nhật");
                else
                    this.Close();
            }
            else
            {
                //Thêm mới
                nguoiSuDung = new NguoiSuDung();
                nguoiSuDung.TenDangNhap = txtTenDangNhap.Text;
                nguoiSuDung.HoTen = txtHoTen.Text;
                nguoiSuDung.MatKhau = txtMatKhau.Text;
                nguoiSuDung.VaiTro = cmbVaiTro.SelectedIndex;
                if (!BizNguoiSuDung.AddNew(nguoiSuDung))
                    DialogUtils.ShowError("Không thể thêm mới người này");
                else
                    this.Close();
                nguoiSuDung = null;
            }

        }

        private void bntBoQua_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void OnEnter(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
                bntDongY.PerformClick();
        }
    }
}
